package com.linkgie.galaxyframework.service.account;

import com.linkgie.galaxyframework.security.AuthenticatedAccount;

/**
 * 账户详情；
 * <p>
 * 
 * 定义与账户有关的描述信息；
 * 
 * @author Atom
 *
 */
public interface AccountDetails {

	/**
	 * 账户的全局唯一ID；
	 * <p>
	 * 参考 {@link AuthenticatedAccount#getId()}；
	 * 
	 * @return
	 */
	String getID();

	/**
	 * 账户的登录认证口令；
	 * 
	 * <p>
	 * 参考 {@link AuthenticatedAccount#getUsername()}；
	 * 
	 * @return
	 */
	String getUsername();

	/**
	 * 账户的名称；
	 * <p>
	 * 参考 {@link AuthenticatedAccount#getName()}；
	 * 
	 * @return
	 */
	String getName();

	/**
	 * 账户的全名；
	 * 
	 * @return
	 */
	String getFullName();

	/**
	 * 邮箱地址；
	 * 
	 * @return
	 */
	String getEMail();

	/**
	 * 电话号码；
	 * 
	 * @return
	 */
	String getTelNumber();

	/**
	 * 社会身份唯一ID；
	 * <p>
	 * 例如：身份证号，社保号
	 * 
	 * @return
	 */
	String getSocialID();

	/**
	 * 社会身份唯一ID的类型；
	 * <p>
	 * 例如：身份证、社保卡等等；
	 * 
	 * @return
	 */
	String getSocialIDType();

	/**
	 * 数据版本；
	 * <p>
	 * 
	 * 版本的形式由实现者决定，可以是顺序递增的序列号，也可以是时间戳，或者某种哈希值，或者其他算法生成的表示对应到账户详情的唯一编码；
	 * 
	 * @return
	 */
	long getDataVersion();

}
